#include<stdio.h>
#include<conio.h>
#include<graphics.h>

int main()
{
	float w,h,g;//游戏画面大小，重力加速度
	float bx,by,bvy,r;//球心坐标，y方向速度，半径大小
	float rect_left,rect_top,rect_width,rect_heigh,rect_vx;//障碍物的相关系数
	g=0.2;//重力加啊速度
	w=600;//宽度
	h=400;//画面高度
	initgraph(w,h);//新建一个画布
	r=20;//小球半径
	bx=w/4;//小球x位置
	by=h/2-r;//小球y位置
	bvy=0;//初始速度
	rect_heigh=100;//方块高度
	rect_width=20;//方块宽度
	rect_left=w*3/4;//方块顶部x坐标
	rect_top=h-rect_heigh;
	rect_vx=-3;//方块x方向速度

	int score=0;
	int isBallOnFloor = 1; // 小球是否在地面上，避免重复起跳 
	
	while(1)//一直循环
	{
		if(kbhit())//当按键时
		{
			char input=_getch();//获得输入字符
			/*
			000*/
			if (input==' '&& isBallOnFloor==1)//当按空格键时
			{
				bvy=-12;//给小求一个向上速度
				isBallOnFloor =0;//表示小球不在地面了不能重复起跳
			}

		
		}
		bvy=bvy+g;//加速竖直方向
		by=by+bvy;//更新Y坐标
		if (by>=h-r)//如果落到地面
		{
			bvy=0;//速度为0
			by=h-r;//规范Y坐标，避免落到地面
			isBallOnFloor = 1;//仙球在地面上
		}
		rect_left=rect_left+rect_vx;//方向左移
		/*再次完善小球得分机制if (rect_left <= 0)//如果方块在最左边
		{
			score=score+1;//得分加一
			rect_left=w;//重新出现
			rect_heigh=rand() % int(h/4)+h/4;
			rect_vx=rand()/float(RAND_MAX)*4-7;//设置方块的随机速度
		
		}*/
		if (rect_left <= 0&&by+r<=h&&by+r>=h/4)//如果方块在最左边
		{
			score=score+1;//得分加一
			rect_left=w;//重新出现
			rect_heigh=rand() % int(h/4)+h/4;
			rect_vx=rand()/float(RAND_MAX)*4-7;//设置方块的随机速度
		
		}
		/*完善小球的得分机制
		fillrectangle(rect_left,0,rect_left+rect_width,h/4);//话方块
		fillrectangle(rect_left,h-rect_heigh,rect_left+rect_width,h);//话方块2*/

		if((rect_left<=bx+r)
			&&(rect_left+rect_width>=bx-r)
			&&(h/4>=by+r))//若果小球碰到方块
		{
			score=score-1;//因为过了之后就算之前碰到了会自动加一
			bvy=0;
			Sleep(100);//慢动作效果
		
		}

		if((rect_left<=bx+r)
			&&(rect_left+rect_width>=bx-r)
			&&(h-rect_width<=by+r))//若果小球碰到方块
		{
			score=score-1;//因为过了之后就算之前碰到了依然会加1
			bvy=0;
			Sleep(100);//慢动作效果
		
		}
		if (score>=2)
		{
			printf("得到两分挑战成功\n");
			cleardevice;
			break;
		}
		if (score<-50)
		{
			printf("挑战失败再接再厉\n");
				cleardevice;
				break;
		}


		
		cleardevice();//清空画面
		fillcircle(bx,by,r);//绘制小球

		fillrectangle(rect_left,0,rect_left+rect_width,h/4);//话方块
		fillrectangle(rect_left,h-rect_heigh,rect_left+rect_width,h);//话方块2

		TCHAR s[20];//定义字符串数组
		_stprintf(s,_T("%d"),score);//将score转为字符串
		settextstyle(40,0,_T("宋体"));//设置文字大小，字体
		outtextxy(50,30,s);//输出得分文字
		
		Sleep(10);//暂停十毫秒
	}
	
	closegraph();
	return 0;

}
